#define HASH_TABLE_SIZE 1111
+//#define SHOW_PATH
+
/* A default palette, containing standard ANSI / EGA colors
*
*/
{
BablPalette **palptr = dst_model_data;
BablPalette *pal = *palptr;
+#ifdef SHOW_PATH
+ fprintf (stderr, "d");
+#endif
while (n--)
{
int idx;
int best_idx = 0;
double best_diff = 100000;
- double *srcf;
-
- srcf = ((double *) src);
+ double srcf[4];
+ int c;
+ for (c = 0; c < 4; c++)
+ {
+ srcf[c] = ((double *) src)[c];
+ if (srcf[c] < 0.0)
+ srcf[c] = 0.0;
+ if (srcf[c] > 1.0)
+ srcf[c] = 1.0;
+ }
for (idx = 0; idx<pal->count; idx++)
{
}
}
- ((double *) dst)[0] = best_idx / 255.5;
+ ((double *) dst)[0] = best_idx / 255.0;
src += sizeof (double) * 4;
dst += sizeof (double) * 1;
{
BablPalette **palptr = dst_model_data;
BablPalette *pal = *palptr;
-
+
+#ifdef SHOW_PATH
+ fprintf (stderr, "D");
+#endif
assert(pal);
while (n--)
{
int best_idx = 0;
double best_diff = 100000;
- double *srcf;
+ double srcf[4];
double alpha;
+ int c;
+ for (c = 0; c < 4; c++)
+ {
+ srcf[c] = ((double *) src)[c];
+ if (srcf[c] < 0.0)
+ srcf[c] = 0.0;
+ if (srcf[c] > 1.0)
+ srcf[c] = 1.0;
+ }
- srcf = ((double *) src);
alpha = srcf[3];
for (idx = 0; idx<pal->count; idx++)
}
}
- ((double *) dst)[0] = best_idx / 255.5;
+ ((double *) dst)[0] = best_idx / 255.0;
((double *) dst)[1] = alpha;
src += sizeof (double) * 4;
assert(pal);
while (n--)
{
- int idx = (((double *) src)[0]) * 255.5;
+ int idx = (((double *) src)[0]) * 255.0;
double *palpx;
if (idx < 0) idx = 0;
assert(pal);
while (n--)
{
- int idx = (((double *) src)[0]) * 255.5;
+ int idx = (((double *) src)[0]) * 255.0;
double alpha = (((double *) src)[1]);
double *palpx;
palpx = ((double *)pal->data_double) + idx * 4;
memcpy (dst, palpx, sizeof(double)*4);
- ((double *)dst)[3] *= alpha;
+ ((double *)dst)[3] *= alpha;
src += sizeof (double) * 2;
dst += sizeof (double) * 4;
assert (palptr);
pal = *palptr;
assert(pal);
+#ifdef SHOW_PATH
+ fprintf (stderr, "8");
+#endif
while (n--)
{
dst[0] = babl_palette_lookup (pal, src[0], src[1], src[2], src[3]);
long n,
void *src_model_data)
{
+ const Babl *space = babl_conversion_get_destination_space (conversion);
BablPalette **palptr = src_model_data;
BablPalette *pal;
assert (palptr);
pal = *palptr;
assert(pal);
+
+#ifdef SHOW_PATH
+ fprintf (stderr, "f");
+#endif
while (n--)
{
float *src_f = (void*) src_b;
else if (src_f[c] <= 0.0f)
src[c] = 0;
else
- src[c] = src_f[c] * 255 + 0.5f;
+ src[c] = babl_trc_from_linear (space->space.trc[0],
+ src_f[c]) * 255 + 0.5f;
}
if (src_f[3] >= 1.0f)
src[3] = 255;
long n,
void *src_model_data)
{
- const Babl *space = babl_conversion_get_source_space (conversion);
+ const Babl *space = babl_conversion_get_destination_space (conversion);
BablPalette **palptr = src_model_data;
BablPalette *pal;
assert (palptr);
pal = *palptr;
assert(pal);
+#ifdef SHOW_PATH
+ fprintf (stderr, "F");
+#endif
while (n--)
{
float *src_f = (void*) src_b;
else if (src_f[c] <= 0.0f)
src[c] = 0;
else
- src[c] = src_f[c] * 255 + 0.5f;
+ src[c] = babl_trc_from_linear (space->space.trc[0],
+ src_f[c]) * 255 + 0.5f;
}
if (src_f[3] >= 1.0f)
src[3] = 255;
NULL);
babl_conversion_new (
- babl_format ("R'G'B'A float"),
+ babl_format ("RGBA float"),
f_pal_a_u8,
"linear", rgba_float_to_pal_a,
"data", palptr,
NULL);
babl_conversion_new (
- babl_format ("R'G'B'A float"),
+ babl_format ("RGBA float"),
f_pal_u8,
"linear", rgba_float_to_pal,
"data", palptr,